#define  _CRT_SECURE_NO_WARNINGS

#include <iostream>
using namespace std;

//int& Add(int a, int b)
//{
//	int c = a + b;
//	return c;
//}
//
//int main()
//{
//	int& ret = Add(1, 2);
//	cout << ret << endl;
//	Add(3, 4);
//	cout << ret << endl;
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int* b = &a;
//
//	int& c = a;
//
//	return 0;
//}

//inline int Func()
//{
//	int c = 2;
//	return c;
//}
//
//int main()
//{
//	Func();
//	return 0;
//}

//int Add(int a, int b){}
//int Del(int a, int b) {}
//
//int main()
//{
//	int (*p)(int, int) = Add;
//	auto p = Del;
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	auto p1 = &a;
//	auto* p2 = &a;
//	auto& c = a;
//
//	return 0;
//}

//int main()
//{
//	int array[] = { 1,2,3,4,5,6,7,8,9 };
//	int sz = sizeof(array) / sizeof(array[0]);
//	for (int i = 0; i < sz; i++)
//	{
//		cout << array[i] << endl;
//	}
//	return 0;
//}

//int main()
//{
//	int array[] = { 1,2,3,4,5,6,7,8,9 };
//	for (auto& e : array)
//	{
//		cout << e << endl;
//	}
//	return 0;
//}

void Fun(int n)
{
	cout << "Fun1(int n)" << endl;
}

void Fun(int* p)
{
	cout << "Fun2(int* p)" << endl;
}

int main()
{
	Fun(0);
	Fun(NULL);
	Fun(nullptr);

	return 0;
}